import Vue from 'vue';
import Vuex from 'vuex';
import {
	http
} from '@/common/api/index';
Vue.use(Vuex);

const store = new Vuex.Store({
	state: {
		cartList: [], // 购物车数据
		userInfo: null, // 用户信息
		shareCode: null, // 邀请人邀请码
		themeColor: '#FF6F27', // 主题色
		themeBgColor: '#FF6F27', // 主题背景色
    priceColor: '#FE5014', // 金额字体颜色
    themeBgOpacityColor: '#F8E8EB', // 主题背景半透明色
		gestureAgain: true, // 是否需要二次验证
		location: null,
		phone: '', // 用户登录时多页面共享手机号信息
		partner_id: 0, // 店铺id
		shopInfo: {}, // 店铺信息
		cartNum: 0, // 购物车角标数量
		isAvoid: '', // 是否上架隐藏内容
		// location: {
		// 	latitude: 39.5427,
		// 	longitude: 116.2317,
		// 	city: '北京'
		// },
		location: {
			latitude: '',
			longitude: '',
			city: ''
		},
		Current_City: '位置', // 选择的城市
	},
	mutations: {
		// 选择的城市
		Current_City(state, Current_City) {
			state.Current_City = Current_City
		},
		getNum(state, num) {
			state.cartNum = num;
		},
		// 获取店铺id
		partner_id(state, partner_id) {
			state.partner_id = partner_id;
		},
		// 店铺信息
		shopInfo(state, info) {
			state.shopInfo = info;
		},
		setBadge(state, num) {
			// #ifdef MP-WEIXIN
			let index = 2;
			// #endif
			// #ifndef MP-WEIXIN
			let index = 2;
			// #endif
			if (num) {
				if (Number(num) > 99) {
					uni.setTabBarBadge({
						index: index,
						text: '99+'
					});
				} else {
					uni.setTabBarBadge({
						index: index,
						text: num + ''
					});
				}
			} else {
				uni.removeTabBarBadge({
					index: index
				});
			}
		},
		// 上架开关
		shelfAvoid(state, time) {
			state.isAvoid = time;
			global.isAvoid = time;
		},
		// 初始化APP,获取缓存的token,用户信息等其他缓存内容
		initApp(state) {
			const USERINFO = uni.getStorageSync('USER_INFO');
			if (USERINFO) {
				state.userInfo = USERINFO;
				global.userInfo = USERINFO;
				global.token = USERINFO.user_token;
			}
		},
		// 更新用户信息
		updateUserInfo(state, data) {
			if (state.userInfo) {
				state.userInfo = {
					...state.userInfo,
					...data,
				};
			} else {
				state.userInfo = data;
			}
			uni.setStorageSync('USER_INFO', state.userInfo);
			global.userInfo = state.userInfo;
			if (state.userInfo.user_token) {
				global.token = state.userInfo.user_token;
			}
		},
		// 切换主题
		switchThemeColor(state, color) {
			state.themeColor = color;
		},
		// 退出登录
		logout(state) {
			state.userInfo = null;
			state.cartList = [];
			global.userInfo = null;
			global.token = null;
			state.phone = '';
			uni.removeStorageSync('USER_INFO');
		},
		// 二次验证
		setGestureAgain(state, data) {
			state.gestureAgain = data;
		},
		updataLocation(state, data) {
			state.location = data;
			uni.setStorageSync('LOCATION', state.location);
		},
		sharePhone(state, data) {
			state.phone = data;
		}
	},
	// 从基本数据(state)派生的数据，相当于state的计算属性
	getters: {
		// 上架开关
		isAvoid(state) {
			return state.isAvoid;
		},
		// 购物车修改接口之后仍然使用时因为还有其他页面调用
		allNum(state) {
			return state.cartNum;
		},
		isLogin(state) {
			if (state.userInfo == null) {
				return false;
			} else {
				return true;
			}
		},
		// 是否会员
		isMember(state) {
			console.log("state.userInfo: ",state.userInfo);
			if (state.userInfo && state.userInfo.user_level) {
				return true;
			} else {
				return false;
			}
		},
		// 用户ID
		uid(state) {
			if (state.userInfo && state.userInfo.id) {
				return state.userInfo.id;
			} else {
				return 0;
			}
		},
		// 用户Token
		token(state) {
			if (state.userInfo && state.userInfo.user_token) {
				return state.userInfo.user_token;
			} else {
				return null;
			}
		},
		// 用户信息
		userInfo(state) {
			if (state.userInfo) {
				return state.userInfo;
			} else {
				return null;
			}
		},
    // 定位信息
    location(state) {
    	if (state.location) {
    		return state.location;
    	} else {
    		return {
				latitude: 39.5427,
				longitude: 116.2317,
				city: '北京'
			};
    	}
    },
	},
	// 和mutation的功能大致相同，不同之处在于 ==》1. Action 提交的是 mutation，而不是直接变更状态。 2. Action 可以包含任意异步操作。
	actions: {
		getCartList({
			dispatch,
			commit,
			getters,
			state
		}) {
			if (state.userInfo) {
				http.post(global.apiUrls.numberOfShoppingCart).then((res) => {
					if (res.data.code == 1) {
						let data = res.data.data;
						data = data > 99 ? '99+' : data;
						commit('getNum', data);
						commit('setBadge', data);
					}
				});
			} else {
				commit('setBadge', 0);
			}
		},
		// ios上架规避接口
		getIsShelf({
			dispatch,
			commit,
			getters,
			state
		}) {
			http.post(global.apiUrls.aboutUs).then((res) => {
				if (res.data.code === 1) {
					let data = res.data.data.app_type;
					// res.data.data.app_type   base:基础版  alpha:内测版  beta:公测版  rc:终测版   release:正式版
					let type = data === 'release' ? true : false;
					commit('shelfAvoid', type);
				}
			});
		}
	},
});
export default store;
